package com.idroc.coelacanth.core.membership;

/**
 * 节点在集群中状态
 * @author yuyoo (yuyoo4j@163.com)
 * @date 2009-12-2 上午11:45:25
 */
public enum MemberState {
	 
	JOIN("加入集群", "节点加入集群,但未对外提供任何服务, 其他节点协助其初始化", 1),
	OPEN("开放服务", "节点初始化成功,对外已集群成员提供服务", 2),
	CLOSE("关闭服务", "节点由于故障,不对外提供服务,其服务有其他节点兼职提供", 4),
	LEAVE("离开集群", "节点故障永久,其数据与服务需要被转移到新节点或者由其他节点兼职", 8),
	DROP("丢弃节点", "辅助状态,不在成员间存在,当节点接受到此信息,将节点信息丢弃", 16);
	
	/**
	 * 名称
	 */
	private String name = null;
	
	/**
	 * 描述
	 */
	private String desc = null;
	
	/**
	 * 编码
	 */
	private int code = 0;
	
	private MemberState(String n, String d, int c) {
		
		this.name = n;
		this.desc = d;
		this.code = c;
	}
		
	public String getName() {
		return name;
	}

	public String getDesc() {
		return desc;
	}

	public int getCode() {
		return code;
	}

	@Override
	public String toString() {

		StringBuilder sb = new StringBuilder();
		sb.append("memberState[");
		sb.append("name:").append(name).append(",");
		sb.append("code:").append(code).append(",");
		sb.append("desc:").append(desc);
		sb.append("]");
		return sb.toString();
	}
}
